package client.profesor;

import static client.common.libs.Underscore._;
import static org.stjs.javascript.JSCollections.$array;
import static org.stjs.javascript.JSCollections.$map;

import org.stjs.javascript.Array;
import org.stjs.javascript.Map;

import client.common.EndPoints.ProfesorEP;
import client.common.Models.Grado;
import client.common.Models.Materia;
import client.common.Models.MateriaGrado;
import client.common.angular.NgScope;
import client.common.javascript.JsProcedure1;

public class IndicadoresScope extends NgScope {

	@SuppressWarnings("unused")
	private Array<MateriaGrado> materiasGrado;
	private Map<String, Materia> mapaMaterias;
	private Map<String, Grado> mapaGrados;

	public static Array<String> $inject() {
		return $array("Profesor");
	}

	public IndicadoresScope(ProfesorEP profesorEP) {
		super("IndicadoresScope");
		final IndicadoresScope self = this;
		mapaMaterias = $map();
		mapaGrados = $map();
		profesorEP.getMaterias(new JsProcedure1<Array<Materia>>() {

			@Override
			public void $invoke(Array<Materia> p) {
				_.assign(self.mapaMaterias, _.indexBy(p, "id"));

			}
		});
		profesorEP.getGrados(new JsProcedure1<Array<Grado>>() {

			@Override
			public void $invoke(Array<Grado> p) {
				_.assign(self.mapaGrados, _.indexBy(p, "id"));

			}
		});
		materiasGrado = profesorEP.getMateriasGrado();

	}
}
